Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

334
Vistas
AWS Lambda Node.js. Error de mysql "No se puede poner en cola la consulta después de invocar salir" en la segunda llamada en adelante:

Actualmente estoy creando una resolución de AWS Lambda que utiliza la biblioteca mysql de Nodejs. En este momento, mi lambda es capaz de ejecutar una consulta a la base de datos durante la primera invocación. Sin embargo, en las invocaciones posteriores se produce el error "No se puede poner en cola la consulta después de invocar la salida". Soy consciente de que tiene algo que ver con la conexión a la base de datos, pero si no me equivoco, 'connection.query' debería estar haciendo una conexión implícita a la base de datos. También estoy llamando a la 'conexión.fin' dentro de la devolución de llamada. ¿Alguien podría echarme una mano en esto?

Aquí está el código Lambda index.js:

 /* Amplify Params - DO NOT EDIT API_SIMPLETWITTERCLONE_GRAPHQLAPIENDPOINTOUTPUT API_SIMPLETWITTERCLONE_GRAPHQLAPIIDOUTPUT API_SIMPLETWITTERCLONE_GRAPHQLAPIKEYOUTPUT AUTH_SIMPLETWITTERCLONEB1022521_USERPOOLID ENV REGION Amplify Params - DO NOT EDIT */ const mysql = require("mysql"); // const util = require("util"); const config = require("./config.json"); const connection = mysql.createConnection({ host: config.dbhost, user: config.dbuser, password: config.dbpassword, database: config.dbname, }); // resolvers const resolvers = { Query: { getAllUser: (event) => { return getAllUser(); }, }, }; function executeQuery(sql, params) { return new Promise((resolve, reject) => { const queryCallback = (error, results) => { if (error) { console.log("Error occured during query: " + error.message); connection.destroy(); reject(error); } else { console.log("Connected to database and executed query"); console.log("Results:", results); connection.end((err) => { if (err) { console.log("there was an error closing database:" + err.message); } console.log("database closed"); resolve(results); }); } }; if (params) { connection.query(sql, [...params], (error, results) => { queryCallback(error, results); }); } else { connection.query(sql, (error, results) => { queryCallback(error, results); }); } }); } async function getAllUser() { const sql = "SELECT * FROM User"; try { const users = await executeQuery(sql); return users; } catch (error) { throw error; } } exports.handler = async (event) => { // TODO implement console.log("event", event); console.log('DB connection var', connection); const typeHandler = resolvers[event.typeName]; if (typeHandler) { const resolver = typeHandler[event.fieldName]; if (resolver) { try { return await resolver(event); } catch (error) { throw error; } } } throw new Error("Resolver not found"); };
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Estás finalizando tu conexión durante la primera invocación. Como resultado, la segunda invocación ya no tiene esa conexión.

Si crea el objeto de connection durante la importación del módulo , no lo .end() en su invocación.

Si desea .end() el objeto de connection durante la invocación , también debe crearlo durante la invocación .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda